home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / mig / Mig_GetPdevName.c < prev    next >
C/C++ Source or Header  |  1990-06-22  |  2KB  |  90 lines

  1. /* 
  2.  * Mig_GetPdevName.c --
  3.  *
  4.  *    This file contains the Mig_GetPdevName procedure, which
  5.  *    returns the string corresponding to the pseudo-device
  6.  *    used for either the global server or the local host.
  7.  *
  8.  * Copyright 1990 Regents of the University of California
  9.  * Permission to use, copy, modify, and distribute this
  10.  * software and its documentation for any purpose and without
  11.  * fee is hereby granted, provided that the above copyright
  12.  * notice appear in all copies.  The University of California
  13.  * makes no representations about the suitability of this
  14.  * software for any purpose.  It is provided "as is" without
  15.  * express or implied warranty.
  16.  */
  17.  
  18. #ifndef lint
  19. static char rcsid[] = "$Header: /sprite/src/lib/c/mig/RCS/Mig_GetPdevName.c,v 2.0 90/03/10 13:13:02 douglis Stable $ SPRITE (Berkeley)";
  20. #endif not lint
  21.  
  22. #include <fs.h>
  23. #include <stdio.h>
  24. #include <mig.h>
  25.  
  26. extern char *strcpy();
  27.  
  28. /*
  29.  * Define the pseudo-devices used to communicate with the local
  30.  * and global migration daemons.  LOCAL_PDEV is used to form
  31.  * a string based on the hostname.
  32.  */
  33. #ifndef GLOBAL_PDEV
  34. #define GLOBAL_PDEV "/sprite/admin/migd/pdev"
  35. #endif
  36.  
  37. #ifndef LOCAL_PDEV
  38. #define LOCAL_PDEV "/hosts/%s/migd.pdev"
  39. #endif
  40.  
  41. static char *globalPdev = GLOBAL_PDEV;
  42. static char *localPdev  = NULL;
  43.  
  44.  
  45. /*
  46.  *----------------------------------------------------------------------
  47.  *
  48.  * Mig_GetPdevName --
  49.  *
  50.  *    Return the name of the specified pseudo-device.  If global
  51.  *    is non-zero, then return the name of the global pdev, else
  52.  *    the one for this host.
  53.  *
  54.  * Results:
  55.  *    A pointer to the name is returned. If an error is returned
  56.  *    when getting the host name, NULL is returned.
  57.  *
  58.  * Side effects:
  59.  *    Memory is allocated to hold the file name.
  60.  *
  61.  *----------------------------------------------------------------------
  62.  */
  63. char *
  64. Mig_GetPdevName(global)
  65.     int global;            /* Whether to return the global pdev name. */
  66. {
  67.     char hostName[FS_MAX_NAME_LENGTH];
  68.     char fileName[FS_MAX_NAME_LENGTH];
  69.     int status;
  70.     extern char *malloc();
  71.  
  72.     if (global) {
  73.     return(globalPdev);
  74.     } 
  75.  
  76.     if (!localPdev) {
  77.     status = gethostname(hostName, FS_MAX_NAME_LENGTH);
  78.     if (status != 0) {
  79.         return((char *) NULL);
  80.     }
  81.     (void) sprintf(fileName, LOCAL_PDEV, hostName);
  82.     localPdev = malloc((unsigned) (strlen(fileName) + 1));
  83.     if (localPdev == (char *) NULL) {
  84.         return(localPdev);
  85.     }
  86.     (void) strcpy(localPdev, fileName);
  87.     }
  88.     return(localPdev);
  89. }
  90.